home *** CD-ROM | disk | FTP | other *** search
/ JCSM Shareware Collection 1993 November / JCSM Shareware Collection - 1993-11.iso / cl760 / edgraphj.lzh / EXPANDME.EXE / lha / CURVFIT2.GRF < prev    next >
Text File  |  1992-11-19  |  4KB  |  90 lines

  1. {------------------------------------------------------------------------
  2. { CURVFIT2.GRF - EdGraph demo file.   Copyright (c) A Soft Answer, 1992.
  3. {
  4. { Plot points, fit a regression equation, and write out the regression
  5. { results in a table. Then plot the residuals from the regression in a
  6. { separate graph on the same page.
  7. { Do the demo files INTRO.GRF and CURVFIT1.GRF before this one.
  8. {
  9. { Type - AltV to see this demo, or
  10. {      - AltP to print it, but first...SPECIFY WHAT PRINTER YOU ARE USING:
  11. {--------------------------------------------------------------------------}
  12. Printer=1;   { Change the value to one of these, depending on your printer:}
  13.              {      1 = Generic 9 pin dot matrix,                          }
  14.              {   2..7 = Epson: 2=MX, 3=RX, 4=FX, 5=EX, 6=LX, 7=LQ          }
  15.              {   8..9 = IBM: 8=ProPrinter, 9=QuietWriter                   }
  16.              { 10..11 = NEC 24 pin, Toshiba 24 pin                         }
  17.              { 12..13 = HP: 12=DeskJet, 13=LaserJet                        }
  18.              {     14 = PostScript printers                                }
  19. {--------------------------------------------------------------------------}
  20.  
  21. PgHeight=190;    {Available page height in mm}
  22. PgWidth =150;    {Available page width in mm }
  23. Initialise(Printer,PgHeight,PgWidth,1,1,"PRN");
  24.  
  25. x1=0; y1=0; x2=100; y2=20;
  26. NewPlot(x1,y1,x2,y2,30,100,20,80,0,0);
  27. xaxis("",y2,x1,20,2,2,0,0);
  28. yaxis("",x2,y1,5,2,2,0,0);
  29. xaxis("X-Axis",y1,x1,20,1,2,2,1);
  30. yaxis("Y-Axis",x1,y1,5,1,2,2,1);
  31.  
  32. { Define a procedure to generate the data points, as they will need to }
  33. { be read twice (once for the regression, and again for residuals)     }
  34.   a=18; b=50; c=-625;
  35.   Procedure Data;
  36.     For i=0 to 100 step 4;   {Generate data from math expressions   }
  37.                              {The 'sin' term adds errors. You could }
  38.                              {also use the 'random' function.       }
  39.       i   a*exp(sqr(i-b)/c)+sin(10*i)/2;
  40.     EndFor;
  41.   EndProc;
  42.  
  43. { Now plot some points and fit a regression equation. Place the cursor on }
  44. { the word "points" and press F1 for help with the use of the command.    }
  45.  
  46. Join=20;        {The regression equation to fit.}
  47. SelectLine(1);  {Select line style 1}
  48.  
  49. Points(1,2,0,0,2,6,Join,100,0,0,0,"");
  50.   Data;   { ie. read the lines from Procedure Data; }
  51. EndPoints;
  52.  
  53. If Join>2;
  54.   Shadow(1,1,0);      {specify shadow style for the box}
  55.   Box(5,19.5,75,24,0); {draw a box and clear inside}
  56.  
  57.   textstyle(0,0,1); { underline }
  58.   MoveTo(8,23);
  59.   textln("Regression [",Eqn(Join),"]");
  60.   textstyle(0,0,0);  {cancel underline}
  61.   format(4,2,1,0);
  62.   textln(" a = ",curvefita,"      c = ",curvefitc);
  63.   textln(" b = ",curvefitb,"      r = ",curvefitr);
  64. Endif;
  65.  
  66. {--------------------------------------------------------------------}
  67. { Now start the residuals graph
  68. {--------------------------------------------------------------------}
  69.  
  70. y1=-1.5; y2=1.5;  {expected range of residuals}
  71.  
  72. NewPlot(x1,y1,x2,y2,30,100,140,40,0,0,0);
  73. xaxis("",y2,x1,20,2,1,0,0);
  74. yaxis("",x2,-2,1,2,2,0,0);
  75. xaxis("x-data",y1,x1,20,1,1,0,1);
  76. yaxis("Residuals",x1,-2,1,1,2,2,1);
  77. selectline(1);
  78. line(x1,0,x2,0);
  79. clip(1);
  80.  
  81. { Now plot the residuals from the last regression. You MUST have first done}
  82. { the regression, which puts the correct values into variables curvefita,  }
  83. { curvefitb & curvefitc. These values are then used by the Points command  }
  84. { to plot the residuals on the y-axis vs the x-data on the x-axis          }
  85. { (residuals are the differences between the data and the fitted function).}
  86.  
  87. Points(1,2,0,0,3,4,-Join,100,0,"");  { -Join means plot residuals }
  88.   Data;
  89. EndPoints;
  90.